{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "##  This notebook was used to investigate an issue emailed to me indicating that mplfinance raised an exception when the data was np.float32 (instead of np.float64)\n",
    "\n",
    "## It turns out that version of mplfinance was calling `statistics.stdev()` <br>which raised the exception.  Turns out to be a bug in statistics:<br><br>   https://bugs.python.org/issue39218<br><br>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This allows multiple outputs from a single jupyter notebook cell:\n",
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"all\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.0.3'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "import pandas as pd\n",
    "pd.__version__  # for the record"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(252, 9)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>UpperB</th>\n",
       "      <th>LowerB</th>\n",
       "      <th>PercentB</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-07-01</th>\n",
       "      <td>132.089996</td>\n",
       "      <td>134.100006</td>\n",
       "      <td>131.779999</td>\n",
       "      <td>133.919998</td>\n",
       "      <td>117.161659</td>\n",
       "      <td>202385700</td>\n",
       "      <td>132.373927</td>\n",
       "      <td>125.316073</td>\n",
       "      <td>1.219057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-05</th>\n",
       "      <td>133.779999</td>\n",
       "      <td>134.080002</td>\n",
       "      <td>133.389999</td>\n",
       "      <td>133.809998</td>\n",
       "      <td>117.065437</td>\n",
       "      <td>165936000</td>\n",
       "      <td>133.254297</td>\n",
       "      <td>124.912703</td>\n",
       "      <td>1.066618</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close   Adj Close  \\\n",
       "Date                                                                     \n",
       "2011-07-01  132.089996  134.100006  131.779999  133.919998  117.161659   \n",
       "2011-07-05  133.779999  134.080002  133.389999  133.809998  117.065437   \n",
       "\n",
       "               Volume      UpperB      LowerB  PercentB  \n",
       "Date                                                     \n",
       "2011-07-01  202385700  132.373927  125.316073  1.219057  \n",
       "2011-07-05  165936000  133.254297  124.912703  1.066618  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>UpperB</th>\n",
       "      <th>LowerB</th>\n",
       "      <th>PercentB</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-06-28</th>\n",
       "      <td>132.289993</td>\n",
       "      <td>132.990005</td>\n",
       "      <td>131.279999</td>\n",
       "      <td>132.789993</td>\n",
       "      <td>118.641281</td>\n",
       "      <td>169242100</td>\n",
       "      <td>136.500761</td>\n",
       "      <td>128.219241</td>\n",
       "      <td>0.551922</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-29</th>\n",
       "      <td>135.199997</td>\n",
       "      <td>136.270004</td>\n",
       "      <td>134.850006</td>\n",
       "      <td>136.100006</td>\n",
       "      <td>121.598610</td>\n",
       "      <td>212250900</td>\n",
       "      <td>136.721010</td>\n",
       "      <td>128.792993</td>\n",
       "      <td>0.921670</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close   Adj Close  \\\n",
       "Date                                                                     \n",
       "2012-06-28  132.289993  132.990005  131.279999  132.789993  118.641281   \n",
       "2012-06-29  135.199997  136.270004  134.850006  136.100006  121.598610   \n",
       "\n",
       "               Volume      UpperB      LowerB  PercentB  \n",
       "Date                                                     \n",
       "2012-06-28  169242100  136.500761  128.219241  0.551922  \n",
       "2012-06-29  212250900  136.721010  128.792993  0.921670  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('../data/SPY_20110701_20120630_Bollinger.csv',index_col=0,parse_dates=True)\n",
    "df.shape\n",
    "df.head(2)\n",
    "df.tail(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#%matplotlib qt\n",
    "import mplfinance as mpf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "tdf = df.iloc[0:20]\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(tdf.iloc[0,0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "tdf = tdf.astype(np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.float32"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(tdf.iloc[0,0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import statistics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "abc = tdf.iloc[0:3,0].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([132.09, 133.78, 133.49], dtype=float32)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "abc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "133.12"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "statistics.mean(abc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([132.08999634, 133.77999878, 133.49000549])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "abc.astype(np.float64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9037173223977577"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "statistics.stdev(abc.astype(np.float64))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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covmzJmj48ePN2pz/vx5LV++XOnp6UpLS9M999yjnTt3yuFweGsVAAAA/IbfhT6LxaJ58+Zp69atCg8PbzL/73//u2bNmqV+/fpp586d2rRpky5fvqxZs2apoqJCkmS1WjVr1iydOXNGL730kvbv369Zs2bphRde0LZt27y9SgAAAD7nd6Fv7969slqtys/PV0xMTJP5ubm56tevn7KzszV48GCNGDFCL7zwgiwWi/bv3y+pfkvgmTNn9OSTT2rUqFH61re+penTp2vixInKz8/39ioBAAD4XKivC/im9PR0TZ8+XWazudn5P/vZz3T58mWFhHydV+Pi4iTVb+G71rVtJKlLly5urhYAACAw+F3oS0xMbHV+RESEIiIiGk0rLCyUJN14442SpJtvvllJSUlav369cnJy1KtXL/35z3/W+++/rxUrVrTav8lU/whEDXUHav1oH8Y5+DHGxsA4+4drx8ETY+HJcXa1T78Lfa46d+6cnn/+ed1666265ZZbJNVv0du+fbsef/xxTZgwQaGhobLZbFqyZImmT5/ean9J8T0UGRnpjdI9Jim+h69LgBcwzsGPMTYGxtm3LGXRkqT+sdFKTvDcWHhinKurw1xqH9Ch75NPPtGjjz6q2NhYrV692jn9ypUrWrBggSRp48aN6t27t/7yl79o/fr16t69e6vBr+S8RRERVz1euyeYTPUfqpLzFnGScvBinIMfY2wMjLN/OFde6Xzu8ZnF7f17cpyt1mqX2gds6Dty5IieeOIJDRo0SK+88kqjkz52796to0eP6o9//KP69esnSRo+fLjKy8v1i1/8QtOmTVNoaPOr7nAo4L98wbAOaBvjHPwYY2NgnH2rT584LVz6pPr0ifPoOHhinF3tz+/O3m2Pjz76SHPmzNG4ceOUm5vb5Czf4uJiRUdHOwNfg6SkJFmtVuelXQAAgLHFxvXV4mUrFBvX19eleFzAhb7PP/9cjz32mCZOnKi1a9c2e0ZufHy8KisrVVZW1mh6cXGxwsLC1KdPH2+VCwAA4Bf8LvRZLBZVVFSooqJCNptNNTU1zr+vXLmitWvXqra2Vj/84Q/1xRdfOOdVVFTIYqnfF//AAw+oe/fuWrZsmT788EP985//1O7du7V7925NnTq1xV27AAAAwcrv0s/ChQt1+PBh59+lpaU6cOCAJCk7O1vvvfeeKisr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\n",
      "text/plain": [
       "<Figure size 800x575 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mpf.plot(tdf,type='candle')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
